package com.ruoyi.match.config;

import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnels;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

import java.nio.charset.Charset;

@Component
public class BloomFilterExample {

    private static final int EXPECTED_INSERTIONS = 1000; // 预期插入元素的数量
    private static final double FALSE_POSITIVE_PROBABILITY = 0.01; // 误判率

    // 布隆过滤器初始化
    BloomFilter<String> bloomFilter = BloomFilter.create(
            Funnels.stringFunnel(Charset.defaultCharset()), // 使用字符串类型的 Funnel
            EXPECTED_INSERTIONS, // 预期插入元素的数量
            FALSE_POSITIVE_PROBABILITY // 误判率
    );

    // 在 Spring 的配置文件中定义 bean
    @Bean
    public BloomFilter<String> bloomFilter() {
        return BloomFilter.create(
                Funnels.stringFunnel(Charset.defaultCharset()), // 使用字符串类型的 Funnel
                EXPECTED_INSERTIONS, // 预期插入元素的数量
                FALSE_POSITIVE_PROBABILITY // 误判率
        );
    }

    public boolean mightContain(String key) {
        return bloomFilter.mightContain(key);
    }

    public void put(String key) {
        bloomFilter.put(key);
    }

}
